Web 服務(wù)器 (Web Server)
Web 服務(wù)器可以解析 (handles) HTTP 協(xié)議。當(dāng) Web 服務(wù)器接收到一個(gè) HTTP 請(qǐng)求 (request),會(huì)返回一個(gè) HTTP 響應(yīng) (response),例如送回一個(gè) HTML 頁(yè)面。為了處理一個(gè)請(qǐng)求 (request),Web 服務(wù)器可以響應(yīng) (response) 一個(gè)靜態(tài)頁(yè)面或圖片,進(jìn)行頁(yè)面跳轉(zhuǎn) (redirect),或者把動(dòng)態(tài)響應(yīng) (dynamic response) 的產(chǎn)生委托 (delegate) 給一些其它的程序例如 CGI 腳本,JSP (JavaServer Pages) 腳本,servlets,ASP (Active Server Pages) 腳本,服務(wù)器端 (server-side) JavaScript,或者一些其它的服務(wù)器端 (server-side) 技術(shù)。無(wú)論它們 (譯者注:腳本) 的目的如何,這些服務(wù)器端 (server-side) 的程序通常產(chǎn)生一個(gè) HTML 的響應(yīng) (response) 來(lái)讓瀏覽器可以瀏覽。
要知道,Web 服務(wù)器的代理模型 (delegation model) 非常簡(jiǎn)單。當(dāng)一個(gè)請(qǐng)求 (request) 被送到 Web 服務(wù)器里來(lái)時(shí),它只單純的把請(qǐng)求 (request) 傳遞給可以很好的處理請(qǐng)求 (request) 的程序 (譯者注:服務(wù)器端腳本)。Web 服務(wù)器僅僅提供一個(gè)可以執(zhí)行服務(wù)器端 (server-side) 程序和返回 (程序所產(chǎn)生的) 響應(yīng) (response) 的環(huán)境,而不會(huì)超出職能范圍。服務(wù)器端 (server-side) 程序通常具有事務(wù)處理 (transaction processing),數(shù)據(jù)庫(kù)連接 (database connectivity) 和消息 (messaging) 等功能。
雖然 Web 服務(wù)器不支持事務(wù)處理或數(shù)據(jù)庫(kù)連接池,但它可以配置 (employ) 各種策略 (strategies) 來(lái)實(shí)現(xiàn)容錯(cuò)性 (fault tolerance) 和可擴(kuò)展性 (scalability),例如負(fù)載平衡 (load balancing),緩沖 (caching)。集群特征 (clustering—features) 經(jīng)常被誤認(rèn)為僅僅是應(yīng)用程序服務(wù)器專(zhuān)有的特征。
應(yīng)用程序服務(wù)器 (The Application Server)
根據(jù)我們的定義,作為應(yīng)用程序服務(wù)器,它通過(guò)各種協(xié)議,可以包括 HTTP,把商業(yè)邏輯暴露給 (expose) 客戶(hù)端應(yīng)用程序。Web 服務(wù)器主要是處理向?yàn)g覽器發(fā)送 HTML 以供瀏覽,而應(yīng)用程序服務(wù)器提供訪問(wèn)商業(yè)邏輯的途徑以供客戶(hù)端應(yīng)用程序使用。應(yīng)用程序使用此商業(yè)邏輯就象你調(diào)用對(duì)象的一個(gè)方法 (或過(guò)程語(yǔ)言中的一個(gè)函數(shù)) 一樣。
應(yīng)用程序服務(wù)器的客戶(hù)端 (包含有圖形用戶(hù)界面 (GUI) 的) 可能會(huì)運(yùn)行在一臺(tái) PC、一個(gè) Web 服務(wù)器或者甚至是其它的應(yīng)用程序服務(wù)器上。在應(yīng)用程序服務(wù)器與其客戶(hù)端之間來(lái)回穿梭 (traveling) 的信息不僅僅局限于簡(jiǎn)單的顯示標(biāo)記。相反,這種信息就是程序邏輯 (program logic)。正是由于這種邏輯取得了 (takes) 數(shù)據(jù)和方法調(diào)用 (calls) 的形式而不是靜態(tài) HTML,所以客戶(hù)端才可以隨心所欲的使用這種被暴露的商業(yè)邏輯。
在大多數(shù)情形下,應(yīng)用程序服務(wù)器是通過(guò)組件 (component) 的應(yīng)用程序接口 (API) 把商業(yè)邏輯暴露 (expose)(給客戶(hù)端應(yīng)用程序) 的,例如基于 J2EE (Java 2 Platform, Enterprise Edition) 應(yīng)用程序服務(wù)器的 EJB (Enterprise JavaBean) 組件模型。此外,應(yīng)用程序服務(wù)器可以管理自己的資源,例如看大門(mén)的工作 (gate-keeping duties) 包括安全 (security),事務(wù)處理 (transaction processing),資源池 (resource pooling),和消息 (messaging)。就象 Web 服務(wù)器一樣,應(yīng)用程序服務(wù)器配置了多種可擴(kuò)展 (scalability) 和容錯(cuò) (fault tolerance) 技術(shù)。